/*
 * Classe que modela o objeto Curso
 *
 */

package br.senac.sp.uniobjetos;


public class Curso {
	private Integer idCurso, idEspecie, minAlunos, maxAlunos;
	private String descricao;
	private boolean alterou;

	public Curso() {
	    this.idCurso = -1;
        this.descricao = "";
        this.idEspecie = -1;
        this.minAlunos = -1;
        this.maxAlunos = -1;
	}
	
	public Curso (Integer idCurso, String descricao, Integer idEspecie, Integer minAlunos, Integer maxAlunos) {
		this.idCurso = idCurso;
		this.descricao = descricao;
		this.idEspecie = idEspecie;
		this.minAlunos = minAlunos;
		this.maxAlunos = maxAlunos;	 
	}

	public Integer getIdCurso() {
		return idCurso;
	}
	public void setIdCurso(Integer idCurso) {
		this.idCurso = idCurso;
	}
	
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		if (alterou == false) alterou = !this.descricao.equals(descricao);
		this.descricao = descricao;
	}
	
	public Integer getIdEspecie() {
		return idEspecie;
	}
	public void setIdEspecie(Integer idEspecie) {
		if (alterou == false) alterou = !this.idEspecie.equals(idEspecie);
		this.idEspecie = idEspecie;
	}
	
	public Integer getMinAlunos() {
		return minAlunos;
	}
	public void setMinAlunos(Integer minAlunos) {
		if (alterou == false) alterou = !this.minAlunos.equals(minAlunos);
		this.minAlunos = minAlunos;
	}	

	public Integer getMaxAlunos() {
		return maxAlunos;
	}
	public void setMaxAlunos(Integer maxAlunos) {
		if (alterou == false) alterou = !this.maxAlunos.equals(maxAlunos);
		this.maxAlunos = maxAlunos;
	}
	
	//-- Gambiarra para listagem
	public String getEspecie() {		
		try {		
			return idEspecie.equals(1) ? "Pós-Graduação" : idEspecie.equals(0) ? "Graduação" : null;
		} catch (Exception e) {
			return null;
		}
	}
	
	//-- Estado do objeto
	public boolean isAlterou() {
		return alterou;
	}
	
	public boolean equals(Object obj) {
		try {
			Curso Curso = (Curso) obj;
			return idCurso.equals(Curso.getIdCurso());
		} catch(Exception e) {
			return false;
		}
	}
	
	public boolean equals(Curso obj) {
	    return this.idCurso.equals(obj.getIdCurso()) &&
	            this.descricao.equals(obj.getDescricao()) &&
	            this.idEspecie.equals(obj.getIdEspecie()) &&
	            this.minAlunos.equals(obj.getMinAlunos()) &&
	            this.maxAlunos.equals(obj.getMaxAlunos());
	}
}